package iterator;

/**
 * 迭代器模式：
 *  对容器对象中各个元素进行访问的方法
 *  为不同容器提供一致的遍历行为，不关心内部元素的组成结构，提供统一的访问接口
 *  1. 抽象集合，有抽象迭代器的关联
 *  2. 具体集合
 *  3. 抽象迭代器，定义统一的hasNext和next方法
 *  4. 具体迭代器
 * 场景：
 *  1. 访问聚合内容，无须暴露内部
 *  2. 为聚合对象提供遍历
 *  3. 为遍历不同的聚合，提供统一接口
 * =>
 *  list
 */
public class IteratorTest {
    public static void main(String[] args) {
        //集合
        Object[] objects = new Object[]{new Object(),new Object()};
        AggregateImpl aggregate = new AggregateImpl(objects);
        //迭代器
        Iterator iterator = aggregate.getIterator();
        while (iterator.hasNext()){
            System.out.println(iterator.next());
        }
    }
}
